package org.lt.cj.model.dao;

import java.util.List;
import java.util.Set;
import org.lt.cj.core.Seed;
import org.lt.cj.model.pojo.Attribute;
import org.lt.cj.model.pojo.Category;
import org.lt.cj.model.pojo.Description;
import org.lt.cj.model.pojo.Evaluation;
import org.lt.cj.model.pojo.Product;
import org.lt.cj.model.pojo.Seller;

/**
 * @author zgh
 */
public interface ICollectDao {

    public void insertUrl(String task, String url);//保存已访问的链接

//    public void insertUnvisitUrl(String task, String url);//保存未访问的链接

    public void insertUnvisitSeed(String task, Seed seedUrl);//保存未访问的链接种子

    public boolean contiansUnvisitedUrl(String url);//包含未访问的链接

    public void deleteUnvisitUrl(String unvisitUrl);//删除未访问url

    public void deleteUnvisitUrlSet(Set<String> set);//删除未访问url集合

    public long existUrl(String url);//判断一个链接是否已经存在已访问链接表

    public int getCountByTask(String task);//根据任务名取得已访问链接的总数

    public int getUnvisitCountByTask(String task);    //按任务名查询未访问url的总数

    public Set<String> getUnvisitedURLs(String taskname, int count);    //按照任务名和数量来取得未访问URL数据

    public List<Seed> getUnvisitedSeeds(String taskname, int count);    //按照任务名和数量来取得未访问种子URL数据

    public boolean UnvisitedURLsIsEmpty();    //判断未访问URL表内数据是否为空返回true则表示为空，返回false则表示数据库的记录不为空

    public boolean UnvisitedURLsIsEmpty(String taskname);     //根据任务名判断未访问URL表 内的url数据是否为空

    //对分类信息表进行操作
    //插入分类信息
    public void insertCategory(long cid, String name, long firstCate, long secondCate, String lanFrom, String toLan, int updated);

    //根据ID删除分类
    public void deleteCategory(long cid, String fromLan);

    //根据名称与父类ID查询分类是否存在，存在返回ID，不存在返回-1
    public long existCategory(String name, long firstId, long secondId, String fromLan);

    //查询分类信息，numbers指定数量
    public List<Category> getCategory(String language, int numbers);

    //将分类设置为已翻译
    public void setCategoryTranslated(long cid, String fromLan, String toLan);

    //对商家信息表进行操作
    //插入商家信息
    public void insertSeller(long sid, String name, String company, String location, String site, String imNumber, String fromLan, String toLan, int updated);

    //根据ID删除商家息
    public void deleteSeller(long sid, String fromLan);

    //根据名称查询商家是否存在，存在返回ID，不存在返回-1
    public long existSeller(String name, String fromLan);

    //查询商家信息，numbers指定数量
    public List<Seller> getSeller(String language, int numbers);

    //将商家信息设置为已翻译
    public void setSellerTranslated(long sid, String fromLan, String toLan);

    //对商品表进行操作
    //插入商品信息
    public void insertProduct(long pid, long cateId, long sellerId, String name, double price, int sellCount, String collectTime, String url, String fromLan, String toLan, int updated);

    //根据ID删除商品信息
    public void deleteProduct(long pid, String fromLan);

    //根据url查询商品是否存在，存在返回ID，不存在返回-1
    public long existProduct(String url, String fromLan);

    //查询商品信息，numbers指定数量
    public List<Product> getProduct(String language, int numbers);

    //将商品信息设置为已翻译
    public void setProductTranslated(long pid, String fromLan, String toLan);

    //对属性表进行操作
    //插入属性信息
    public void insertAttribute(long aid, long productId, String name, String value, String fromLan, String toLan, int updated);

    //根据ID删除属性信息
    public void deleteAttribute(long aid, String fromLan);

    //查询属性信息，numbers指定数量
    public List<Attribute> getAttribute(String language, int numbers);

    //将属性信息设置为已翻译
    public void setAttrebuteTranslated(long aid, String fromLan, String toLan);

    //对详情表进行操作
    //插入属性信息
    public void insertDescription(long did, long productId, String content, String fromLan, String toLan, int updated);

    //根据ID删除详情信息
    public void deleteDescription(long did, String fromLan);

    //查询详情信息，numbers指定数量
    public List<Description> getDescription(String language, int numbers);

    //将详情信息设置为已翻译
    public void setDescriptionTranslated(long did, String fromLan, String toLan);

    //对评价表进行操作
    //插入评价信息
    public void insertEvaluation(long eid, long productId, String content, String time, String fromLan, String toLan, int updated);

    //根据ID删除评价信息
    public void deleteEvaluation(long eid, String fromLan);

    //查询评价信息，numbers指定数量
    public List<Evaluation> getEvaluation(String language, int numbers);

    //将评价信息设置为已翻译
    public void setEvaluationTranslated(long eid, String fromLan, String toLan);
}
